#ifndef METADIRECTORY_H_
#define METADIRECTORY_H_

#include <string>
#include <vector>
#include "MetaFile.h"

//! MetaDirectory trieda. 
/*!
 	Obsahuje data o adresari ktory je sucastou schemy na validaciu obsahu
	archivacneho suboru 
*/

namespace Validator
{



class MetaDirectory
{
	public:
		//! Constructor
		/*!
			Zakladny konstruktor triedy
		*/
		MetaDirectory(void);
		MetaDirectory(std::string theName,std::vector<MetaFile> theFiles,std::vector<MetaDirectory> theDirectories,bool theAnyFlag);
		~MetaDirectory(void);

		//! GetName
		/*!
			Sluzi na ziskanie nazvu adresara 
			\return nazov adresara
		*/
		std::string GetName();

		//! Add
		/*!
			Sluzi na pridanie suboru 
			\param subor na pridanie 
		*/
		void Add(MetaFile aFile);

		//! Add
		/*!
			Sluzi na pridanie adresara
			\param subor na pridanie 
		*/
		void Add(MetaDirectory aDir);
		
		//! GetDirectories
		/*!
			Sluzi na ziskanie kolekcie (vector) pod-adresarov
			\return kolekcia adresarov
		*/
		std::vector<MetaDirectory> &GetDirectories();

		//! GetFiles
		/*!
			Sluzi na ziskanie kolekcie (vector) suborov patracich adresaru
			\return kolekcia suborov
		*/
		std::vector<MetaFile> GetFiles();

		//! GetHasValidContent
		/*!
			Funkcia urci ci adresar ma spravny obsah alebo nie
			\return true ak ma spravny obsah, false inak
		*/
		bool GetAnyFlag();

	private:
		std::string myName;
		std::vector<MetaDirectory> myDirectories;
		std::vector<MetaFile> myFiles;
		bool myAnyFlag;
};

}

#endif